From 6cf0660e74de8ae1462e5aa355be864553f01109 Mon Sep 17 00:00:00 2001 From: tsteven4 Date: Sat, 9 Mar 2019 09:44:04 -0700 Subject: [PATCH] clean up gui main and fix a png. (#313) * clean up gui main and fix a png. - fix libpng warning: iCCP: known incorrect sRGB profile issue with runit.png with pngcrush. - fix includes for gui/main.cc, including removal of CoreFoundation.h - use QApplication static methods instead of going directly to the underlying QCoreApplication static methods. - no path setting in GUI, instead pass the full path to gpsbabel when using QProcess::start. in formatload.cc xlt() use qt methods to get a char* instead of resorting to stdlib. At this point Qt assumes all translate strings are utf8. However, the formatload xlt intent doesn't work because 1) MainWindow::LoadLanguage hasn't been called when MainWindow::loadFormats is called. 2) the translations don't exist for the format bits from gpsbabel that fromatload tries to translate. I think this was the intent of the gpsbabel_*.ts files which are very out of date and no longer distributed. --- gui/formatload.cc | 25 +++++++++----- gui/formatload.h | 5 ++- gui/images/runit.png | Bin 5097 -> 2455 bytes gui/main.cc | 36 ++++---------------- gui/mainwindow.cc | 78 ++++++++++++++++++++++++++++--------------- gui/mainwindow.h | 28 ++++++++++++---- 6 files changed, 102 insertions(+), 70 deletions(-) diff --git a/gui/formatload.cc b/gui/formatload.cc index fc806cf60..c8e1ed501 100644 --- a/gui/formatload.cc +++ b/gui/formatload.cc @@ -21,18 +21,27 @@ // //------------------------------------------------------------------------ -#include -#include -#include -#include -#include +#include // for QByteArray +#include // for operator==, QChar +#include // for QCharRef +#include // for QCoreApplication +#include // for QObject +#include // for QProcess +#include // for QRegExp +#include // for QString, operator+ +#include // for QTextStream +#include // for QVariant +#include // for QApplication +#include // for QMessageBox + #include "formatload.h" -#include "appname.h" +#include "appname.h" // for appName + //------------------------------------------------------------------------ static QString xlt(const QString& f) { - return QCoreApplication::translate("", f.toStdString().c_str()); + return QCoreApplication::translate("", f.toUtf8().constData()); } //------------------------------------------------------------------------ @@ -127,7 +136,7 @@ bool FormatLoad::getFormats(QList& formatList) formatList.clear(); QProcess babel; - babel.start("gpsbabel", QStringList() << "-^3"); + babel.start(QApplication::applicationDirPath() + "/gpsbabel", QStringList() << "-^3"); if (!babel.waitForStarted()) { return false; } diff --git a/gui/formatload.h b/gui/formatload.h index 2389d2444..370c1b598 100644 --- a/gui/formatload.h +++ b/gui/formatload.h @@ -25,7 +25,10 @@ #ifndef FORMATLOAD_H #define FORMATLOAD_H -#include "format.h" +#include // for QList +#include // for QStringList + +#include "format.h" // for Format class FormatLoad { diff --git a/gui/images/runit.png b/gui/images/runit.png index de9b58068b1cc952d4191c6fa613128687c26464..1ab7a1db7d95e39c0ab9e60b0444007fdfebb26a 100644 GIT binary patch delta 2425 zcmV-<35NFRCzlhDBt`^hK}|sb0I`n?{9y$E0004VQb$4o*~u(_0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmwks%j<2>?k%K~z}7otJrR9OW6t zf8RH=Gdr{1*l~R2u!-Y2;j|Er%Tw+U1FvoFO+Xb0RXPnnMr+wa3Yr>>SR9DwxrqU?D z4@wLT4e(KC7ag1Tx;xi&Z`2#alTm?H%2T;7NlP2) z8yY4G6;f7+#nI2Q=HnU>t}0?F({16m|k{93?I2RTv3@C(>`z(Ov8u}6jnyic4_u2xgCS&15b|%5SAD-WtnwFJjJEw zU_j&xG^rt_KuC!c5-BA@3jDH9>%rN7JbK|OWD3erKuR;1WK5>rn8n}sJjsdnbOw#X z1YwXk5G&$1X2?<0&XlrlX6g!IidD*2o&?Y>X4lQv=Jy>bkn1jy?{_H-7IE@LoI;U; zQ^0W?9LHfGU!bl2L~5&R`Tf7|PZnimOpZ^cW?wT;&wGRE=4tc|4dN6W3i$$m&X7aC z*I~eQs9T^d7CI-5I*@77PB$lF_w7~;=Rg{eN-I*PLg+C<2cd-^LFllu{|V0AzLcvM z-hi&9Mg?3v{%U4jxR4cFZ)9E9I#gNVMHKaOSE02~?arEjPYGXhZt*N0Lm$yx<~Um^DrTsLvK27w`k zo@|w%Us2u-Y76il&;|5B+zOb<02}~vAW|ZKMn_2{P*EAzsFuid<iyiM#D_DfF>`38Vp|vPbk} z-WUSa4c9KdiUsXw0I+)N3tVvTIV}I<<=p(p4|sRq7VcSgKUsf&3>*RSm2fK<8c+vS zjgqKDx9V4st_~|Tc9Fh4oylNN0{;l0D#S9$E>oZ3{DtQ;y?Gix`SuEQO=s1nXSngv z<>Z_qLV!OAi>55*gz>EeDG#!hLT%*kmdVp-0V^Z%2E!er=fH4(w6R=Zuwj}$Hs2i* zJBb5#T>oQQ$4_B@$(%E3Z#kI(H^9xYC6*tl;4_2b788;U9uA`=3C13bNA>KJHhPtm(Jd`%_G zJTW=yRNld@?vo-+g%jsUsD<+uoX6&_jhuVeS9$#HC)j;t7alH#4OP{krIQ0|BvKi8 zcmF0Ds+y>-F>wVL7Nl)R*&u6R!f6sc)JwU2;a{TL4>3n_oh31)Km~aa0 z8QQ`vPb?>YQw?>sU}r#2gET>;jt+FNs%)CaP3GAfUS`>87ZB>nv2JCcek!!gusFCr zcqa0B^M96P##}LP?)S#7vZn+ScfUQ%@L-aGG?IA~S|yAmYf=^eLx@U{71gxWwll3^ zCb_~9{<--DWC&&kPMBj+=n#9~f6l!q*s6B_-!tdApIUZBYbZsk9$|u`L z8cC)y3tA26wnR&5ARvxnqEbXK1f^VZ2#E-60j3QTr<=q_(gWL`%3tZerC$2XqEtUs zNV`ccpMOo=Z?y(D+uc#5n1e`xRtrXh#LlKkn-;pRBZMG|BD}z(G+e^(4+;A~#$eaL zgf<(0@1s=zj%N$E7T3g29aCAZ&lAF|6W^M7QO&RGW~-^W0f(VNM4S;=RavU+ES6v~UU6=F47*13P{+Z8+ztW|rzaBrA8 zTclIfENN&@UpDE~%vnt*R!y#H%*t$amb94$1fJ(n7|N6DDa5^doDU9dExp>e*MBN1 zvcA0bvm4f9ZcbB6g(eJI%o=9dwc50Fwbp86WELP8jtlN!*i{;gcb6S@#6BOEUp}@d rPFZ}B_IzZRmkX%`1S?hiMKS&hF#Q)P0>z-b00000NkvXXu0mjf#tLE` literal 5097 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 LNkvXXu0mjftBjLt diff --git a/gui/main.cc b/gui/main.cc index d92cc7bb5..a5672a4fc 100644 --- a/gui/main.cc +++ b/gui/main.cc @@ -20,26 +20,11 @@ // USA // //------------------------------------------------------------------------ -#define _CRT_SECURE_NO_DEPRECATE 1 -#include -#include -#include -#include -#include -#include +#include // for QT_VERSION, QT_VERSION_CHECK +#include // for QIcon +#include // for QApplication -#include "mainwindow.h" -#include "gmapdlg.h" - -#ifdef _WIN32 -const char* pathSeparator = ";"; -#else -const char* pathSeparator = ":"; -#endif - -#if defined (Q_OS_MAC) -#include -#endif +#include "mainwindow.h" // for MainWindow //------------------------------------------------------------------------ int main(int argc, char** argv) @@ -51,16 +36,9 @@ int main(int argc, char** argv) QApplication app(argc, argv); QApplication::setWindowIcon(QIcon(":/images/appicon.png")); - - QString newPath = "PATH=" + QApplication::applicationDirPath() + - QString(pathSeparator) + getenv("PATH"); - char* newPathEnv = new char[newPath.length() + 1]; - strcpy(newPathEnv, newPath.toStdString().c_str()); - putenv(newPathEnv); - - QCoreApplication::setOrganizationName("GPSBabel"); - QCoreApplication::setOrganizationDomain("gpsbabel.org"); - QCoreApplication::setApplicationName("GPSBabel"); + QApplication::setOrganizationName("GPSBabel"); + QApplication::setOrganizationDomain("gpsbabel.org"); + QApplication::setApplicationName("GPSBabel"); MainWindow mainWindow(nullptr); mainWindow.show(); diff --git a/gui/mainwindow.cc b/gui/mainwindow.cc index 781c946dc..157e0db9e 100644 --- a/gui/mainwindow.cc +++ b/gui/mainwindow.cc @@ -19,32 +19,58 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 // USA // -#include -#include -#include -#include -#include -#include -#include -#include -// #include +#include // for QByteArray +#include // for QDate +#include // for QDateTime +#include // for QDir +#include // for QEvent (& QEvent::LanguageChange, QEvent::LocaleChange) +#include // for QFile +#include // for QFileInfo +#include // for QLocale +#include // for QMimeData +#include // for QProcess, QProcess::NotRunning +#include // for QRegExp +#include // for QSettings +#include // for QTemporaryFile +#include // for QTime +#include // for QUrl +#include // for QVariant +#include // for SmoothTransformation, WaitCursor +#include // for foreach +#include // for QCursor +#include // for QDesktopServices +#include // for QIcon +#include // for QImage +#include // for QApplication, qApp +#include // for QCheckBox +#include // for QDialogButtonBox +#include // for QFileDialog +#include // for QMessageBox, operator|, QMessageBox::Yes, QMessageBox::No +#include // for QPlainTextEdit +#include // for QPushButton +#include // for QRadioButton +#include // for QStackedWidget + +#include // for exit #include "mainwindow.h" -#include "../gbversion.h" -#include "aboutdlg.h" -#include "advdlg.h" -#include "appname.h" -#include "babeldata.h" -#include "donate.h" -#include "filterdlg.h" -#include "formatload.h" -#include "gmapdlg.h" -#include "help.h" -#include "optionsdlg.h" -#include "preferences.h" -#include "processwait.h" -#include "version_mismatch.h" -#include "upgrade.h" +#include "../gbversion.h" // for VERSION +#include "aboutdlg.h" // for AboutDlg +#include "advdlg.h" // for AdvDlg +#include "appname.h" // for appName +#include "babeldata.h" // for BabelData +#include "donate.h" // for Donate +#include "filterdlg.h" // for FilterDialog +#include "formatload.h" // for FormatLoad +#include "gmapdlg.h" // for GMapDialog +#include "help.h" // for ShowHelp +#include "optionsdlg.h" // for OptionsDlg +#include "preferences.h" // for Preferences +#include "processwait.h" // for ProcessWaitDialog +#include "upgrade.h" // for UpgradeCheck +#include "version_mismatch.h" // for VersionMismatch + + const int BabelData::noType_ = -1; const int BabelData::fileType_ = 0; @@ -56,7 +82,7 @@ const int BabelData::deviceType_ = 1; QString MainWindow::findBabelVersion() { QProcess babel; - babel.start("gpsbabel", QStringList() << "-V"); + babel.start(QApplication::applicationDirPath() + "/gpsbabel", QStringList() << "-V"); if (!babel.waitForStarted()) { return QString(); } @@ -869,7 +895,7 @@ bool MainWindow::runGpsbabel(const QStringList& args, QString& errorString, { QProcess* proc = new QProcess(nullptr); QString name = "gpsbabel"; - proc->start(name, args); + proc->start(QApplication::applicationDirPath() + '/' + name, args); ProcessWaitDialog* waitDlg = new ProcessWaitDialog(nullptr, proc); if (proc->state() == QProcess::NotRunning) { diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 31d539927..94920935c 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -22,13 +22,29 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include "ui_mainwinui.h" -#include "format.h" -#include "filterdata.h" -#include "babeldata.h" -#include "upgrade.h" +#include // for QEvent +#include // for QList +#include // for QObject (& Q_OBJECT, slots) +#include // for QString +#include // for QStringList +#include // for QTranslator +#include // for QCloseEvent +#include // for QDragEnterEvent +#include // for QDropEvent +#include // for QPixmap +#include // for QAction +#include // for QComboBox +#include // for QLabel +#include // for QLineEdit +#include // for QMainWindow +#include // for QWidget + +#include "babeldata.h" // for BabelData +#include "filterdata.h" // for AllFiltersData +#include "format.h" // for Format +#include "ui_mainwinui.h" // for Ui_MainWindow +#include "upgrade.h" // for UpgradeCheck -#include class MainWindow: public QMainWindow { -- 2.30.2